package com.ruoyi.veterinary.service;

import java.util.List;
import com.ruoyi.veterinary.domain.VetInventory;

/**
 * 仓库管理Service接口
 * 
 * @author ruoyi
 * @date 2024-01-19
 */
public interface IVetInventoryService 
{
    /**
     * 查询仓库管理
     * 
     * @param inventoryId 仓库管理主键
     * @return 仓库管理
     */
    public VetInventory selectVetInventoryByInventoryId(Long inventoryId);

    /**
     * 查询仓库管理列表
     * 
     * @param vetInventory 仓库管理
     * @return 仓库管理集合
     */
    public List<VetInventory> selectVetInventoryList(VetInventory vetInventory);

    /**
     * 新增仓库管理
     * 
     * @param vetInventory 仓库管理
     * @return 结果
     */
    public int insertVetInventory(VetInventory vetInventory);

    /**
     * 修改仓库管理
     * 
     * @param vetInventory 仓库管理
     * @return 结果
     */
    public int updateVetInventory(VetInventory vetInventory);

    /**
     * 批量删除仓库管理
     * 
     * @param inventoryIds 需要删除的仓库管理主键集合
     * @return 结果
     */
    public int deleteVetInventoryByInventoryIds(Long[] inventoryIds);

    /**
     * 删除仓库管理信息
     * 
     * @param inventoryId 仓库管理主键
     * @return 结果
     */
    public int deleteVetInventoryByInventoryId(Long inventoryId);

    /**
     * 查询库存预警列表
     * 
     * @return 库存预警集合
     */
    public List<VetInventory> selectInventoryWarningList();

    /**
     * 查询即将过期药品列表
     * 
     * @param days 天数
     * @return 即将过期药品集合
     */
    public List<VetInventory> selectExpiringDrugList(Integer days);

    /**
    /**
     * 根据药品名称和批号查询库存
     * 
     * @param drugName 药品名称
     * @param batchNumber 批号
     * @return 库存信息
     */
    public VetInventory selectInventoryByDrugAndBatch(String drugName, String batchNumber);

    /**
     * 根据关键词搜索库存商品
     * 
     * @param keyword 关键词
     * @return 库存列表
     */
    public List<VetInventory> searchInventoryByKeyword(String keyword);
    
    /**
     * 根据药品名称查询最新的库存记录
     * 
     * @param drugName 药品名称
     * @return 最新库存信息
     */
    public VetInventory selectLatestInventoryByDrug(String drugName);

    /**
     * 更新库存数量
     * 
     * @param inventoryId 库存ID
     * @param quantity 数量变化
     * @return 结果
     */
    public int updateInventoryQuantity(Long inventoryId, Integer quantity);
}